#include <iostream>
#include <string>

class Sales_data {
public:
    Sales_data() = default;
    Sales_data(const Sales_data&);              // 拷贝构造函数
    Sales_data& operator =(const Sales_data&);  // 拷贝赋值运算符
private:
    std::string bookNo;
    int units_sold = 0;
    double revenue = 0.0;
};

// 与 Sales_data 的合成的拷贝构造函数等价
Sales_data::Sales_data(const Sales_data &orig) :
    bookNo(orig.bookNo),            // 使用 string 的拷贝构造函数
    units_sold(orig.units_sold),    // 拷贝 orig.units_sold
    revenue(orig.revenue)           // 拷贝 orig.revenue
{ } // 空函数体

// 等价的合成拷贝赋值运算符
Sales_data&
Sales_data::operator =(const Sales_data &rhs)
{
    bookNo = rhs.bookNo;            // 调用 string::operator=
    units_sold = rhs.units_sold;    // 使用内置的 int 赋值
    revenue = rhs.revenue;          // 使用内置的 double 赋值
    return *this;                   // 返回一个此对象的引用
}
